package cn.ljy.authority.web.controller.backstage;

import cn.ljy.authority.service.BaseService;
import cn.ljy.common.model.result.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;


/**
 * 基础控制器，用于规范继承类增删改查方法
 * @author ljy
 * @param <T> 操作对象类
 * @param <Q> 操作对象的查询类
 * @param <K> 操作对象类的主键类型
 */
public abstract class BaseBackstageController2<T,Q,K,S extends BaseService> {

    @Autowired
    protected BaseService baseService;

    @GetMapping("/all")
    protected ResponseData query(Q query){
        return ResponseData.error("控制器没有实现");
    }

    @GetMapping
    protected ResponseData query(Integer page, Integer pageSize, Q query){
        return ResponseData.error("控制器没有实现");
    }

    @GetMapping("/{id}")
    protected ResponseData get(@PathVariable("id") K id){
        return ResponseData.error("控制器没有实现");
    }

    @PutMapping
    protected ResponseData edit(@Valid @RequestBody T t){
        return ResponseData.error("控制器没有实现");
    }

    @PostMapping
    protected ResponseData add(@Valid @RequestBody T t){
        return ResponseData.error("控制器没有实现");
    }

    @DeleteMapping
    protected ResponseData deletes(@NotEmpty(message="操作失败：请选择要移除的记录")K[] ids){
        return ResponseData.error("控制器没有实现");
    }
}
